//===----------------------------------------------------------------------===//
//
// This source file is part of the Soto for AWS open source project
//
// Copyright (c) 2017-2024 the Soto project authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of Soto project authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//

// THIS FILE IS AUTOMATICALLY GENERATED by https://github.com/soto-project/soto-codegenerator.
// DO NOT EDIT.

#if canImport(FoundationEssentials)
import FoundationEssentials
#else
import Foundation
#endif
@_exported import SotoCore

/// Service object for interacting with AWS KendraRanking service.
///
/// Amazon Kendra Intelligent Ranking uses Amazon Kendra  semantic search capabilities to intelligently re-rank a search  service's results.
public struct KendraRanking: AWSService {
    // MARK: Member variables

    /// Client used for communication with AWS
    public let client: AWSClient
    /// Service configuration
    public let config: AWSServiceConfig

    // MARK: Initialization

    /// Initialize the KendraRanking client
    /// - parameters:
    ///     - client: AWSClient used to process requests
    ///     - region: Region of server you want to communicate with. This will override the partition parameter.
    ///     - partition: AWS partition where service resides, standard (.aws), china (.awscn), government (.awsusgov).
    ///     - endpoint: Custom endpoint URL to use instead of standard AWS servers
    ///     - middleware: Middleware chain used to edit requests before they are sent and responses before they are decoded 
    ///     - timeout: Timeout value for HTTP requests
    ///     - byteBufferAllocator: Allocator for ByteBuffers
    ///     - options: Service options
    public init(
        client: AWSClient,
        region: SotoCore.Region? = nil,
        partition: AWSPartition = .aws,
        endpoint: String? = nil,
        middleware: AWSMiddlewareProtocol? = nil,
        timeout: TimeAmount? = nil,
        byteBufferAllocator: ByteBufferAllocator = ByteBufferAllocator(),
        options: AWSServiceConfig.Options = []
    ) {
        self.client = client
        self.config = AWSServiceConfig(
            region: region,
            partition: region?.partition ?? partition,
            amzTarget: "AWSKendraRerankingFrontendService",
            serviceName: "KendraRanking",
            serviceIdentifier: "kendra-ranking",
            serviceProtocol: .json(version: "1.0"),
            apiVersion: "2022-10-19",
            endpoint: endpoint,
            serviceEndpoints: Self.serviceEndpoints,
            variantEndpoints: Self.variantEndpoints,
            errorType: KendraRankingErrorType.self,
            middleware: middleware,
            timeout: timeout,
            byteBufferAllocator: byteBufferAllocator,
            options: options
        )
    }


    /// custom endpoints for regions
    static var serviceEndpoints: [String: String] {[
        "af-south-1": "kendra-ranking.af-south-1.api.aws",
        "ap-east-1": "kendra-ranking.ap-east-1.api.aws",
        "ap-northeast-1": "kendra-ranking.ap-northeast-1.api.aws",
        "ap-northeast-2": "kendra-ranking.ap-northeast-2.api.aws",
        "ap-northeast-3": "kendra-ranking.ap-northeast-3.api.aws",
        "ap-south-1": "kendra-ranking.ap-south-1.api.aws",
        "ap-south-2": "kendra-ranking.ap-south-2.api.aws",
        "ap-southeast-1": "kendra-ranking.ap-southeast-1.api.aws",
        "ap-southeast-2": "kendra-ranking.ap-southeast-2.api.aws",
        "ap-southeast-3": "kendra-ranking.ap-southeast-3.api.aws",
        "ap-southeast-4": "kendra-ranking.ap-southeast-4.api.aws",
        "ap-southeast-5": "kendra-ranking.ap-southeast-5.api.aws",
        "ap-southeast-7": "kendra-ranking.ap-southeast-7.api.aws",
        "ca-central-1": "kendra-ranking.ca-central-1.api.aws",
        "ca-west-1": "kendra-ranking.ca-west-1.api.aws",
        "cn-north-1": "kendra-ranking.cn-north-1.api.amazonwebservices.com.cn",
        "cn-northwest-1": "kendra-ranking.cn-northwest-1.api.amazonwebservices.com.cn",
        "eu-central-2": "kendra-ranking.eu-central-2.api.aws",
        "eu-north-1": "kendra-ranking.eu-north-1.api.aws",
        "eu-south-1": "kendra-ranking.eu-south-1.api.aws",
        "eu-south-2": "kendra-ranking.eu-south-2.api.aws",
        "eu-west-1": "kendra-ranking.eu-west-1.api.aws",
        "eu-west-3": "kendra-ranking.eu-west-3.api.aws",
        "il-central-1": "kendra-ranking.il-central-1.api.aws",
        "me-central-1": "kendra-ranking.me-central-1.api.aws",
        "me-south-1": "kendra-ranking.me-south-1.api.aws",
        "mx-central-1": "kendra-ranking.mx-central-1.api.aws",
        "sa-east-1": "kendra-ranking.sa-east-1.api.aws",
        "us-east-1": "kendra-ranking.us-east-1.api.aws",
        "us-east-2": "kendra-ranking.us-east-2.api.aws",
        "us-gov-east-1": "kendra-ranking.us-gov-east-1.api.aws",
        "us-gov-west-1": "kendra-ranking.us-gov-west-1.api.aws",
        "us-west-1": "kendra-ranking.us-west-1.api.aws",
        "us-west-2": "kendra-ranking.us-west-2.api.aws"
    ]}


    /// FIPS and dualstack endpoints
    static var variantEndpoints: [EndpointVariantType: AWSServiceConfig.EndpointVariant] {[
        [.fips]: .init(endpoints: [
            "af-south-1": "kendra-ranking-fips.af-south-1.api.aws",
            "ap-east-1": "kendra-ranking-fips.ap-east-1.api.aws",
            "ap-east-2": "kendra-ranking-fips.ap-east-2.api.aws",
            "ap-northeast-1": "kendra-ranking-fips.ap-northeast-1.api.aws",
            "ap-northeast-2": "kendra-ranking-fips.ap-northeast-2.api.aws",
            "ap-northeast-3": "kendra-ranking-fips.ap-northeast-3.api.aws",
            "ap-south-1": "kendra-ranking-fips.ap-south-1.api.aws",
            "ap-south-2": "kendra-ranking-fips.ap-south-2.api.aws",
            "ap-southeast-1": "kendra-ranking-fips.ap-southeast-1.api.aws",
            "ap-southeast-2": "kendra-ranking-fips.ap-southeast-2.api.aws",
            "ap-southeast-3": "kendra-ranking-fips.ap-southeast-3.api.aws",
            "ap-southeast-4": "kendra-ranking-fips.ap-southeast-4.api.aws",
            "ap-southeast-5": "kendra-ranking-fips.ap-southeast-5.api.aws",
            "ap-southeast-6": "kendra-ranking-fips.ap-southeast-6.api.aws",
            "ap-southeast-7": "kendra-ranking-fips.ap-southeast-7.api.aws",
            "ca-central-1": "kendra-ranking-fips.ca-central-1.api.aws",
            "ca-west-1": "kendra-ranking-fips.ca-west-1.api.aws",
            "cn-north-1": "kendra-ranking-fips.cn-north-1.api.amazonwebservices.com.cn",
            "cn-northwest-1": "kendra-ranking-fips.cn-northwest-1.api.amazonwebservices.com.cn",
            "eu-central-2": "kendra-ranking-fips.eu-central-2.api.aws",
            "eu-north-1": "kendra-ranking-fips.eu-north-1.api.aws",
            "eu-south-1": "kendra-ranking-fips.eu-south-1.api.aws",
            "eu-south-2": "kendra-ranking-fips.eu-south-2.api.aws",
            "eu-west-1": "kendra-ranking-fips.eu-west-1.api.aws",
            "eu-west-3": "kendra-ranking-fips.eu-west-3.api.aws",
            "il-central-1": "kendra-ranking-fips.il-central-1.api.aws",
            "me-central-1": "kendra-ranking-fips.me-central-1.api.aws",
            "me-south-1": "kendra-ranking-fips.me-south-1.api.aws",
            "mx-central-1": "kendra-ranking-fips.mx-central-1.api.aws",
            "sa-east-1": "kendra-ranking-fips.sa-east-1.api.aws",
            "us-east-1": "kendra-ranking-fips.us-east-1.api.aws",
            "us-east-2": "kendra-ranking-fips.us-east-2.api.aws",
            "us-gov-east-1": "kendra-ranking-fips.us-gov-east-1.api.aws",
            "us-gov-west-1": "kendra-ranking-fips.us-gov-west-1.api.aws",
            "us-west-1": "kendra-ranking-fips.us-west-1.api.aws",
            "us-west-2": "kendra-ranking-fips.us-west-2.api.aws"
        ])
    ]}

    // MARK: API Calls

    /// Creates a rescore execution plan. A rescore execution  plan is an Amazon Kendra Intelligent Ranking resource  used for provisioning the Rescore API. You set  the number of capacity units that you require for  Amazon Kendra Intelligent Ranking to rescore or re-rank  a search service's results. For an example of using the  CreateRescoreExecutionPlan API, including using  the Python and Java SDKs, see Semantically  ranking a search service's results.
    @Sendable
    @inlinable
    public func createRescoreExecutionPlan(_ input: CreateRescoreExecutionPlanRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> CreateRescoreExecutionPlanResponse {
        try await self.client.execute(
            operation: "CreateRescoreExecutionPlan", 
            path: "/rescore-execution-plans", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Creates a rescore execution plan. A rescore execution  plan is an Amazon Kendra Intelligent Ranking resource  used for provisioning the Rescore API. You set  the number of capacity units that you require for  Amazon Kendra Intelligent Ranking to rescore or re-rank  a search service's results. For an example of using the  CreateRescoreExecutionPlan API, including using  the Python and Java SDKs, see Semantically  ranking a search service's results.
    ///
    /// Parameters:
    ///   - capacityUnits: You can set additional capacity units to meet the  needs of your rescore execution plan. You are given a single  capacity unit by default. If you want to use the default  capacity, you don't set additional capacity units. For more  information on the default capacity and additional capacity  units, see Adjusting  capacity.
    ///   - clientToken: A token that you provide to identify the request to create  a rescore execution plan. Multiple calls to the  CreateRescoreExecutionPlanRequest API with the  same client token will create only one rescore execution plan.
    ///   - description: A description for the rescore execution plan.
    ///   - name: A name for the rescore execution plan.
    ///   - tags: A list of key-value pairs that identify or categorize your  rescore execution plan. You can also use tags to help control  access to the rescore execution plan. Tag keys and values can  consist of Unicode letters, digits, white space, and any of  the following symbols: _ . : / = + - @.
    ///   - logger: Logger use during operation
    @inlinable
    public func createRescoreExecutionPlan(
        capacityUnits: CapacityUnitsConfiguration? = nil,
        clientToken: String? = CreateRescoreExecutionPlanRequest.idempotencyToken(),
        description: String? = nil,
        name: String,
        tags: [Tag]? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> CreateRescoreExecutionPlanResponse {
        let input = CreateRescoreExecutionPlanRequest(
            capacityUnits: capacityUnits, 
            clientToken: clientToken, 
            description: description, 
            name: name, 
            tags: tags
        )
        return try await self.createRescoreExecutionPlan(input, logger: logger)
    }

    /// Deletes a rescore execution plan. A rescore execution  plan is an Amazon Kendra Intelligent Ranking resource  used for provisioning the Rescore API.
    @Sendable
    @inlinable
    public func deleteRescoreExecutionPlan(_ input: DeleteRescoreExecutionPlanRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "DeleteRescoreExecutionPlan", 
            path: "/rescore-execution-plans/{Id}", 
            httpMethod: .DELETE, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Deletes a rescore execution plan. A rescore execution  plan is an Amazon Kendra Intelligent Ranking resource  used for provisioning the Rescore API.
    ///
    /// Parameters:
    ///   - id: The identifier of the rescore execution plan that you  want to delete.
    ///   - logger: Logger use during operation
    @inlinable
    public func deleteRescoreExecutionPlan(
        id: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = DeleteRescoreExecutionPlanRequest(
            id: id
        )
        return try await self.deleteRescoreExecutionPlan(input, logger: logger)
    }

    /// Gets information about a rescore execution plan. A rescore  execution plan is an Amazon Kendra Intelligent Ranking  resource used for provisioning the Rescore API.
    @Sendable
    @inlinable
    public func describeRescoreExecutionPlan(_ input: DescribeRescoreExecutionPlanRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> DescribeRescoreExecutionPlanResponse {
        try await self.client.execute(
            operation: "DescribeRescoreExecutionPlan", 
            path: "/rescore-execution-plans/{Id}", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Gets information about a rescore execution plan. A rescore  execution plan is an Amazon Kendra Intelligent Ranking  resource used for provisioning the Rescore API.
    ///
    /// Parameters:
    ///   - id: The identifier of the rescore execution plan that you want  to get information on.
    ///   - logger: Logger use during operation
    @inlinable
    public func describeRescoreExecutionPlan(
        id: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> DescribeRescoreExecutionPlanResponse {
        let input = DescribeRescoreExecutionPlanRequest(
            id: id
        )
        return try await self.describeRescoreExecutionPlan(input, logger: logger)
    }

    /// Lists your rescore execution plans. A rescore execution plan  is an Amazon Kendra Intelligent Ranking resource used for  provisioning the Rescore API.
    @Sendable
    @inlinable
    public func listRescoreExecutionPlans(_ input: ListRescoreExecutionPlansRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListRescoreExecutionPlansResponse {
        try await self.client.execute(
            operation: "ListRescoreExecutionPlans", 
            path: "/rescore-execution-plans", 
            httpMethod: .GET, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Lists your rescore execution plans. A rescore execution plan  is an Amazon Kendra Intelligent Ranking resource used for  provisioning the Rescore API.
    ///
    /// Parameters:
    ///   - maxResults: The maximum number of rescore execution plans to return.
    ///   - nextToken: If the response is truncated, Amazon Kendra Intelligent  Ranking returns a pagination token in the response. You can use  this pagination token to retrieve the next set of rescore  execution plans.
    ///   - logger: Logger use during operation
    @inlinable
    public func listRescoreExecutionPlans(
        maxResults: Int? = nil,
        nextToken: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListRescoreExecutionPlansResponse {
        let input = ListRescoreExecutionPlansRequest(
            maxResults: maxResults, 
            nextToken: nextToken
        )
        return try await self.listRescoreExecutionPlans(input, logger: logger)
    }

    /// Gets a list of tags associated with a specified resource.  A rescore execution plan is an example of a resource that  can have tags associated with it.
    @Sendable
    @inlinable
    public func listTagsForResource(_ input: ListTagsForResourceRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> ListTagsForResourceResponse {
        try await self.client.execute(
            operation: "ListTagsForResource", 
            path: "/", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Gets a list of tags associated with a specified resource.  A rescore execution plan is an example of a resource that  can have tags associated with it.
    ///
    /// Parameters:
    ///   - resourceARN: The Amazon Resource Name (ARN) of the rescore execution  plan to get a list of tags for.
    ///   - logger: Logger use during operation
    @inlinable
    public func listTagsForResource(
        resourceARN: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> ListTagsForResourceResponse {
        let input = ListTagsForResourceRequest(
            resourceARN: resourceARN
        )
        return try await self.listTagsForResource(input, logger: logger)
    }

    /// Rescores or re-ranks search results from a search service  such as OpenSearch (self managed). You use the semantic search  capabilities of Amazon Kendra Intelligent Ranking to  improve the search service's results.
    @Sendable
    @inlinable
    public func rescore(_ input: RescoreRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> RescoreResult {
        try await self.client.execute(
            operation: "Rescore", 
            path: "/rescore-execution-plans/{RescoreExecutionPlanId}/rescore", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Rescores or re-ranks search results from a search service  such as OpenSearch (self managed). You use the semantic search  capabilities of Amazon Kendra Intelligent Ranking to  improve the search service's results.
    ///
    /// Parameters:
    ///   - documents: The list of documents for Amazon Kendra Intelligent  Ranking to rescore or rank on.
    ///   - rescoreExecutionPlanId: The identifier of the rescore execution plan. A rescore  execution plan is an Amazon Kendra Intelligent Ranking  resource used for provisioning the Rescore API.
    ///   - searchQuery: The input query from the search service.
    ///   - logger: Logger use during operation
    @inlinable
    public func rescore(
        documents: [Document],
        rescoreExecutionPlanId: String,
        searchQuery: String,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> RescoreResult {
        let input = RescoreRequest(
            documents: documents, 
            rescoreExecutionPlanId: rescoreExecutionPlanId, 
            searchQuery: searchQuery
        )
        return try await self.rescore(input, logger: logger)
    }

    /// Adds a specified tag to a specified rescore execution  plan. A rescore execution plan is an Amazon Kendra  Intelligent Ranking resource used for provisioning the  Rescore API. If the tag already exists,  the existing value is replaced with the new value.
    @Sendable
    @inlinable
    public func tagResource(_ input: TagResourceRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> TagResourceResponse {
        try await self.client.execute(
            operation: "TagResource", 
            path: "/", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Adds a specified tag to a specified rescore execution  plan. A rescore execution plan is an Amazon Kendra  Intelligent Ranking resource used for provisioning the  Rescore API. If the tag already exists,  the existing value is replaced with the new value.
    ///
    /// Parameters:
    ///   - resourceARN: The Amazon Resource Name (ARN) of the rescore execution  plan to tag.
    ///   - tags: A list of tag keys to add to a rescore execution plan.  If a tag already exists, the existing value is replaced  with the new value.
    ///   - logger: Logger use during operation
    @inlinable
    public func tagResource(
        resourceARN: String,
        tags: [Tag],
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> TagResourceResponse {
        let input = TagResourceRequest(
            resourceARN: resourceARN, 
            tags: tags
        )
        return try await self.tagResource(input, logger: logger)
    }

    /// Removes a tag from a rescore execution plan. A rescore  execution plan is an Amazon Kendra Intelligent  Ranking resource used for provisioning the  Rescore operation.
    @Sendable
    @inlinable
    public func untagResource(_ input: UntagResourceRequest, logger: Logger = AWSClient.loggingDisabled) async throws -> UntagResourceResponse {
        try await self.client.execute(
            operation: "UntagResource", 
            path: "/", 
            httpMethod: .POST, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Removes a tag from a rescore execution plan. A rescore  execution plan is an Amazon Kendra Intelligent  Ranking resource used for provisioning the  Rescore operation.
    ///
    /// Parameters:
    ///   - resourceARN: The Amazon Resource Name (ARN) of the rescore execution  plan to remove the tag.
    ///   - tagKeys: A list of tag keys to remove from the rescore execution  plan. If a tag key does not exist on the resource, it is  ignored.
    ///   - logger: Logger use during operation
    @inlinable
    public func untagResource(
        resourceARN: String,
        tagKeys: [String],
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws -> UntagResourceResponse {
        let input = UntagResourceRequest(
            resourceARN: resourceARN, 
            tagKeys: tagKeys
        )
        return try await self.untagResource(input, logger: logger)
    }

    /// Updates a rescore execution plan. A rescore execution plan  is an Amazon Kendra Intelligent Ranking resource used for  provisioning the Rescore API. You can update the  number of capacity units you require for Amazon Kendra  Intelligent Ranking to rescore or re-rank a search service's  results.
    @Sendable
    @inlinable
    public func updateRescoreExecutionPlan(_ input: UpdateRescoreExecutionPlanRequest, logger: Logger = AWSClient.loggingDisabled) async throws {
        try await self.client.execute(
            operation: "UpdateRescoreExecutionPlan", 
            path: "/rescore-execution-plans/{Id}", 
            httpMethod: .PUT, 
            serviceConfig: self.config, 
            input: input, 
            logger: logger
        )
    }
    /// Updates a rescore execution plan. A rescore execution plan  is an Amazon Kendra Intelligent Ranking resource used for  provisioning the Rescore API. You can update the  number of capacity units you require for Amazon Kendra  Intelligent Ranking to rescore or re-rank a search service's  results.
    ///
    /// Parameters:
    ///   - capacityUnits: You can set additional capacity units to meet the needs  of your rescore execution plan. You are given a single capacity  unit by default. If you want to use the default capacity, you  don't set additional capacity units. For more information on the default capacity and additional capacity units, see  Adjusting capacity.
    ///   - description: A new description for the rescore execution plan.
    ///   - id: The identifier of the rescore execution plan that you want  to update.
    ///   - name: A new name for the rescore execution plan.
    ///   - logger: Logger use during operation
    @inlinable
    public func updateRescoreExecutionPlan(
        capacityUnits: CapacityUnitsConfiguration? = nil,
        description: String? = nil,
        id: String,
        name: String? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) async throws {
        let input = UpdateRescoreExecutionPlanRequest(
            capacityUnits: capacityUnits, 
            description: description, 
            id: id, 
            name: name
        )
        return try await self.updateRescoreExecutionPlan(input, logger: logger)
    }
}

extension KendraRanking {
    /// Initializer required by `AWSService.with(middlewares:timeout:byteBufferAllocator:options)`. You are not able to use this initializer directly as there are not public
    /// initializers for `AWSServiceConfig.Patch`. Please use `AWSService.with(middlewares:timeout:byteBufferAllocator:options)` instead.
    public init(from: KendraRanking, patch: AWSServiceConfig.Patch) {
        self.client = from.client
        self.config = from.config.with(patch: patch)
    }
}

// MARK: Paginators

@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
extension KendraRanking {
    /// Return PaginatorSequence for operation ``listRescoreExecutionPlans(_:logger:)``.
    ///
    /// - Parameters:
    ///   - input: Input for operation
    ///   - logger: Logger used for logging
    @inlinable
    public func listRescoreExecutionPlansPaginator(
        _ input: ListRescoreExecutionPlansRequest,
        logger: Logger = AWSClient.loggingDisabled
    ) -> AWSClient.PaginatorSequence<ListRescoreExecutionPlansRequest, ListRescoreExecutionPlansResponse> {
        return .init(
            input: input,
            command: self.listRescoreExecutionPlans,
            inputKey: \ListRescoreExecutionPlansRequest.nextToken,
            outputKey: \ListRescoreExecutionPlansResponse.nextToken,
            logger: logger
        )
    }
    /// Return PaginatorSequence for operation ``listRescoreExecutionPlans(_:logger:)``.
    ///
    /// - Parameters:
    ///   - maxResults: The maximum number of rescore execution plans to return.
    ///   - logger: Logger used for logging
    @inlinable
    public func listRescoreExecutionPlansPaginator(
        maxResults: Int? = nil,
        logger: Logger = AWSClient.loggingDisabled        
    ) -> AWSClient.PaginatorSequence<ListRescoreExecutionPlansRequest, ListRescoreExecutionPlansResponse> {
        let input = ListRescoreExecutionPlansRequest(
            maxResults: maxResults
        )
        return self.listRescoreExecutionPlansPaginator(input, logger: logger)
    }
}

extension KendraRanking.ListRescoreExecutionPlansRequest: AWSPaginateToken {
    @inlinable
    public func usingPaginationToken(_ token: String) -> KendraRanking.ListRescoreExecutionPlansRequest {
        return .init(
            maxResults: self.maxResults,
            nextToken: token
        )
    }
}
